In computer networks, it is often desirable for one node to transmit data over a network so the data can be received by all other nodes connected to the network. To accomplish the transmitting, a pool of multicast (group) addresses may be allocated to each network by a network standards body, such as the Institute of Electrical and Electronic Engineers (IEEE) or the American National Standards Institute (ANSI). Any node on the network can read data being transmitted on a multicast address. The standards body guarantees that allocated multicast addresses do not overlap between networks.
Traditionally, multicast addresses were assigned from the pool one at a time, each multicast address serving a specific purpose or function. For example, there are specific multicast addresses assigned for Ethernet end-station xe2x80x9chelloxe2x80x9d messages, LAT service announcements, and Fiber Distributed Data Interface (FDDI) status reporting frames. Each assigned multicast address serves one explicit function. To prevent a node that is receiving one data stream from being inundated by other data streams, a unique multicast address is required for each unique data stream.
A problem with the traditional assignment method is that each multicast address on a network is assigned for a single specific purpose or function. As the number of specific functions on the network increases, more multicast addresses from the network""s allocated pool are assigned to meet the need. Once the network""s pool of allocated multicast addresses is depleted, the network must be allocated an additional pool of multicast addresses. This in turn depletes more addresses from the finite set of addresses that are available to be allocated to the various networks.
While many multicast addresses may be allocated to a network and assigned by the network for specific functions, only a relatively few multicast addresses may be in use on the network at any one time. Indeed, many multicast addresses may be used infrequently because the associated functions are in low demand. Networks are thus expanding their pool of multicast addresses while not using all multicast addresses already allocated to the networks.
There are effectively an infinite number of arbitrary individual data streams available for transmitting over a network. For example, in a computer network accessing video programs, there may be one data stream for each movie, television program, and video image available to the public. Therefore, it is impractical to assign a unique multicast address for every possible data stream. A mechanism to assign a unique multicast address from a finite set of addresses for the duration of the data stream is an ideal solution. The preferred approach is completely distributed and lacks a central agent for assigning the multicast addresses. Therefore, this approach is reliable as nodes join and leave a local area network (LAN).
In addition, it is highly desirable not to force interested nodes on the network to receive unwanted data streams. At the same time, for those nodes that do want to receive a data stream, it is desirable that only the data stream in which the node is interested be received.
The invention provides a general mechanism in which a node on a network can dynamically assign a single multicast address from a network-wide pool of unassigned multicast addresses, and subsequently use that assigned address for the node""s own purposes. When the assigned address is no longer needed, it is returned to the pool. This dynamic assignment permits networks to use fewer multicast addresses then would be required if they were assigned in a more traditional basis where a unique address is assigned for each possible function.
The invention pertains to a computer network having a transmitter node for transmitting a particular data stream to at least one receiver node. A node""s classification as a transmitter or receiver may vary based on the data stream being transmitted or the network protocol. A data stream is transmitted to a dynamically assigned multicast address by first selecting a candidate multicast address that is not being used by any node on the network. An announcement is transmitted at a dedicated announcement multicast address to notify potential receiver nodes and other transmitter nodes that the candidate multicast address has been assigned. Finally, the transmitter node transmits the data stream at the candidate multicast address.
Prior to transmission of a service data stream, available services may be identified on the announcement multicast address. Nodes may forward commands to the transmitter node to initialize transmission on candidate addresses. Transmitter nodes may also automatically transmit a particular data stream without receiving a command for that data stream. Thereafter, the services are identified on the announcement address with their candidate addresses so that any node may receive the transmitted data streams.
The transmitter nodes also monitor the dedicated multicast address to identify conflicts between the selected candidate address and addresses announced by other nodes and to resolve the conflicts by selecting new candidate addresses.
In particular, a preferred system for transmitting video data streams over a computer network is described. The system comprises video sources, each video source having access to at least one video program. On the computer network are client nodes and server nodes. A user on a client node may have an interest in various video programs. The server nodes are in communication with the video sources and respond to commands received from the client nodes. Specifically, the server nodes select particular video programs from the video sources, either automatically or in response to client node commands for the particular video program. There are a plurality of multicast addresses allocated to the computer network. One such multicast address is used cooperatively by the server nodes to announce information regarding available video programs to all client nodes. The remaining pool of multicast addresses is used by the server nodes to transmit video programs to any and all interested client nodes. The server nodes cooperatively manage the dynamic assignment of multicast addresses so that multicast addresses are exclusively assigned to a single video program while that video program is being transmitted. After the video program transmission terminates, the assigned multicast address is deassigned and returned to the pool of unassigned multicast addresses for possible reassignment.